package com.ydl.shopping.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ydl.shopping.core.entity.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

/**
 * 操作日志表
 */
@EqualsAndHashCode(callSuper = true)
@TableName("tb_log")
@Data
@Schema(name = "操作日志表")
public class TbLog extends BaseEntity {
    /** 操作模块 */
    @TableField("model")
    @Schema(description = "操作模块")
    private String model;

    /** 业务类型 0：其它 1：新增 2：修改 3：删除 */
    @TableField("business_type")
    @Schema(description = "业务类型")
    private Integer businessType;

    /** 方法名称 */
    @TableField("method_name")
    @Schema(description = "方法名称")
    private String methodName;

    /** 操作类别，0：其他，1：后台，2：前台 */
    @TableField("operator_type")
    @Schema(description = "操作类别")
    private Integer operatorType;

    /** 操作人员 */
    @TableField("operator_user")
    @Schema(description = "操作人员")
    private String operatorUser;

    /** 请求方式 */
    @TableField("request_method")
    @Schema(description = "请求方式")
    private String requestMethod;

    /** 请求URL */
    @TableField("request_uri")
    @Schema(description = "请求URL")
    private String requestURI;

    /** IP地址 */
    @TableField("request_ip")
    @Schema(description = "IP地址")
    private String requestIp;

    /** 请求服务器地点 */
    @TableField("server_location")
    @Schema(description = "请求服务器地点")
    private String serverLocation;

    /** 请求参数 */
    @TableField("request_param")
    @Schema(description = "请求参数")
    private String requestParam;

    /** 响应数据 */
    @TableField("response_data")
    @Schema(description = "响应数据")
    private String responseData;

    /** 操作状态 0，正常，1：异常 */
    @TableField("status")
    @Schema(description = "操作状态")
    private Integer status;

    /** 异常信息 */
    @TableField("exception_info")
    @Schema(description = "异常信息")
    private String exceptionInfo;

    /** 开始时间 */
    @TableField("start_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(description = "开始时间")
    private Date startTime;

    /** 结束时间 */
    @TableField("end_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(description = "结束时间")
    private Date endTime;

    /** 执行时间 */
    @TableField("execute_time")
    @Schema(description = "执行时间")
    private Long executeTime;

    /** 浏览器名称 */
    @TableField("browser_name")
    @Schema(description = "浏览器名称")
    private String browserName;

    /** 操作系统 */
    @TableField("os")
    @Schema(description = "操作系统")
    private String os;

    /** 操作时间 */
    @TableField("time")
    @Schema(description = "操作时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date time;
}
